]> dgit.raspbian.org Git - opencc.git/commitdiff
New upstream version 1.1.4+ds1
authorBoyuan Yang <byang@debian.org>
Sat, 4 Jun 2022 15:39:42 +0000 (11:39 -0400)
committerBoyuan Yang <byang@debian.org>
Sat, 4 Jun 2022 15:39:42 +0000 (11:39 -0400)
33 files changed:
.appveyor.yml
.github/workflows/nodejs.yml
.github/workflows/python.yml
.github/workflows/release-pypi.yml
.travis.yml
CMakeLists.txt
NEWS.md
README.md
data/dictionary/JPShinjitaiCharacters.txt
data/dictionary/JPVariants.txt
data/dictionary/STCharacters.txt
data/dictionary/STPhrases.txt
data/dictionary/TSCharacters.txt
data/dictionary/TSPhrases.txt
data/dictionary/TWPhrasesIT.txt
data/dictionary/TWPhrasesOther.txt
data/scheme/ts_multi.txt
package.json
release-pypi-linux.sh
release-pypi-macos.sh
release-pypi-windows.cmd
setup.py
src/DictConverter.cpp
src/DictConverter.hpp
src/Lexicon.cpp
src/Lexicon.hpp
src/TextDict.cpp
src/TextDictTest.cpp
src/UTF8Util.hpp
test/testcases/s2t.ans
test/testcases/s2t.in
test/testcases/t2s.ans
test/testcases/t2s.in

index 06278bfc2e0b5e5d824252ed4d04d7cda30de38c..bde79a005e6e54978f581ceeb5c8af9ede2868a8 100644 (file)
@@ -12,7 +12,6 @@ environment:
     - nodejs_version: 16
     - nodejs_version: 14
     - nodejs_version: 12
-    - nodejs_version: 10
 
     # Build plain C++
     - nodejs_version: none
index a9e30339cd8bb7f48a229a19bbbe5b8198f9ba55..4f4344e161b07d383a0ee184be03ffea03cfe46a 100644 (file)
@@ -13,7 +13,7 @@ jobs:
 
     strategy:
       matrix:
-        node-version: [10.x, 12.x, 14.x, 16.x]
+        node-version: [12.x, 14.x, 16.x]
 
     steps:
     - uses: actions/checkout@v2
index 51b393b771b0a0ebb2df1e0acb21d7b253a3dd6a..e7f6ee7d08dd083e0710ef0b8d1befe01752a7c1 100644 (file)
@@ -12,7 +12,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [3.5, 3.6, 3.7, 3.8, 3.9]
+        python-version: [3.7, 3.8, 3.9, '3.10']
 
     steps:
     - uses: actions/checkout@v2
index 27e0b278444592dcb71afd83f9524a4d2b53b930..c9f6e91b3174a1cc38058202367bc4c1ea2a349f 100644 (file)
@@ -19,7 +19,7 @@ jobs:
         docker run --rm -v "${PWD}:/opt/OpenCC" \
           -e TWINE_USERNAME=__token__ \
           -e TWINE_PASSWORD=${{ secrets.PYPI_TOKEN }} \
-          ubuntu:16.04 /bin/bash /opt/OpenCC/release-pypi-linux.sh
+          ubuntu:18.04 /bin/bash /opt/OpenCC/release-pypi-linux.sh
 
     - name: Build package and upload (macOS)
       if: runner.os == 'macOS'
index c9728ef6815e944aeb97929a529706adeccbb5be..2e7269cba637fdda6046a08b09916a3d70dd113b 100644 (file)
@@ -9,7 +9,6 @@ node_js:
   - 16
   - 14
   - 12
-  - 10
 
 os:
   - linux
index 07e374591f89863e14bfbdaa67c8cc36e81486c7..d2ae9877384766386a844f20502848e8c006bdb6 100644 (file)
@@ -42,7 +42,7 @@ set (PACKAGE_URL https://github.com/BYVoid/Opencc)
 set (PACKAGE_BUGREPORT https://github.com/BYVoid/Opencc/issues)
 set (OPENCC_VERSION_MAJOR 1)
 set (OPENCC_VERSION_MINOR 1)
-set (OPENCC_VERSION_REVISION 3)
+set (OPENCC_VERSION_REVISION 4)
 
 if (CMAKE_BUILD_TYPE MATCHES Debug)
   set (version_suffix .Debug)
diff --git a/NEWS.md b/NEWS.md
index 44c544fb0db077c3136cf679f9aaaba25b8a5569..1056b7937284e81b0899ecb11a490cbe8d5e990f 100644 (file)
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,13 @@
 # Change History of OpenCC
 
+## Version 1.1.4
+
+2022年6月4日
+
+* 支持Python 3.10([#637](https://github.com/BYVoid/OpenCC/issues/637)。
+* 移除针对Python 2.7、3.5、3.6和Node 10的构建([#690](https://github.com/BYVoid/OpenCC/issues/690), [#691](https://github.com/BYVoid/OpenCC/issues/691))。
+* 若干其他小修復。
+
 ## Version 1.1.3
 
 2021年9月3日
index 4af8d3771ed9c701d7ae760262573b073926f24e..7225e0142966fa08ddced11eac8245fc80a46dfe 100644 (file)
--- a/README.md
+++ b/README.md
@@ -110,12 +110,14 @@ Document 文檔: https://byvoid.github.io/OpenCC/
 ### Others (Unofficial)
 
 * Swift (iOS): [SwiftyOpenCC](https://github.com/XQS6LB3A/SwiftyOpenCC)
+* iOSOpenCC (pod): [iOSOpenCC](https://github.com/swiftdo/OpenCC)
 * Java: [opencc4j](https://github.com/houbb/opencc4j)
 * Android: [android-opencc](https://github.com/qichuan/android-opencc)
 * PHP: [opencc4php](https://github.com/nauxliu/opencc4php)
 * Pure JavaScript: [opencc-js](https://github.com/nk2028/opencc-js)
 * WebAssembly: [wasm-opencc](https://github.com/oyyd/wasm-opencc)
 * Browser Extension: [opencc-extension](https://github.com/tnychn/opencc-extension)
+* Go (Pure): [OpenCC for Go](https://github.com/longbridgeapp/opencc)
 
 ### Configurations 配置文件
 
@@ -274,7 +276,8 @@ All these libraries are statically linked by default.
 * [Cychih](https://github.com/pi314)
 * [kyleskimo](https://github.com/kyleskimo)
 * [Ryuan Choi](https://github.com/bunhere)
+* [Prcuvu](https://github.com/Prcuvu)
 * [Tony Able](https://github.com/TonyAble)
 * [Xiao Liang](https://github.com/yxliang01)
 
-Please update this list you have contributed OpenCC.
+Please feel free to update this list if you have contributed OpenCC.
index 4dd885faec9c11a6997196c5bf687c3a721a36c6..2b19e66f7ad8d9da310f88a93c1ca37cf696b1fc 100644 (file)
@@ -4,3 +4,4 @@
 欠    缺 欠
 糸    絲 糸
 芸    藝 芸
+浜    濱 浜
index 6ed3b9272826b9f06f5773052785a66ae5c79583..3a8468b0bc64abb2b2682e2cc4464782a1245d7a 100644 (file)
 淨    浄
 淺    浅
 渴    渇
-æº\8c    æ½\91
+æ½\91    æº\8c
 溪    渓
 溫    温
 溼    湿
 穗    穂
 穩    穏
 穰    穣
-ç«\83    ç«\88
+ç«\88    ç«\83
 竊    窃
 粹    粋
 糉    粽
 縣    県
 縱    縦
 總    総
-ç¹\8b    ç¹«
+繫    ç¹\8b
 繡    繍
 繩    縄
 繪    絵
 鄉    郷
 酢    醋
 醉    酔
-é\86\97    é\86±
+é\86±    é\86\97
 醫    医
 醬    醤
 釀    醸
index 912d1625c07605e48f235a4aaa5c7d0ae182e332..89edbc96f1798ba45484ef0ea87455d55d92ae95 100644 (file)
 坚    堅
 坛    壇 罈
 坜    壢
-坝    壩
+坝    壩 垻
 坞    塢
 坟    墳
 坠    墜
 汉    漢
 汤    湯
 汹    洶
+沄    澐
 沈    沈 瀋
 沟    溝
 没    沒
 𫢸   僤
 𫧃   𣍐
 𫧮   𪋿
+𫫇   噁
 𫬐   㘔
+𫭟   塸
+𫭢   埨
+𫭼   𡑍
 𫮃   墠
 𫰛   娙
+𫵷   㠣
 𫶇   嵽
 𫷷   廞
 𫸩   彄
 𬀩   暐
+𬀪   晛
+𬂩   梜
+𬃊   櫍
+𬇕   澫
+𬇙   浿
+𬇹   漍
+𬉼   熰
+𬊈   燖
+𬊤   燀
+𬍛   瓅
+𬍡   璗
+𬍤   璕
+𬒈   礐
+𬒗   𥗽
+𬕂   篢
+𬘓   紃
+𬘘   紞
+𬘡   絪
+𬘩   綎
+𬘫   綄
+𬘬   綪
+𬘭   綝
+𬘯   綧
+𬙂   縯
+𬙊   纆
+𬙋   纕
+𬜬   蔄
+𬜯   䓣
+𬞟   蘋
+𬟁   虉
+𬟽   蝀
+𬣙   訏
+𬣞   詝
+𬣡   諓
+𬣳   詪
+𬤇   諲
+𬤊   諟
+𬤝   譓
+𬨂   軝
+𬨎   輶
+𬩽   鄩
+𬪩   醲
+𬬩   釴
 𬬭   錀
+𬬮   鋹
+𬬱   釿
+𬬸   鉥
+𬬹   鉮
 𬬻   鑪
+𬬿   鉊
+𬭁   鉧
 𬭊   𨧀
+𬭎   鋐
+𬭚   錞
 𬭛   𨨏
+𬭤   鍭
+𬭩   鎓
+𬭬   鏏
 𬭭   鏚
+𬭯   䥕
 𬭳   𨭎
 𬭶   𨭆
+𬭸   鏻
+𬭼   鐩
+𬮱   闉
+𬮿   隑
+𬯀   隮
+𬯎   隤
+𬱖   頔
+𬱟   頠
+𬳵   駓
+𬳶   駉
+𬳽   駪
+𬳿   駼
+𬴂   騑
+𬴃   騞
+𬴊   驎
 𬶋   鮈
 𬶍   鮀
 𬶏   鮠
+𬶐   鮡
 𬶟   鯻
+𬶠   鰊
+𬶨   鱀
+𬶭   鰶
+𬶮   鱚
+𬷕   鵏
+𬸘   鶠
+𬸚   鸑
+𬸣   鶱
+𬸦   鷟
 𬸪   鷭
 𬸯   鷿
+𬹼   齘
+𬺈   齮
+𬺓   齼
 𰬸   繐
 𰰨   菕
 𰶎   譅
index 5a57bdc0a92376c173341ec5f3922ba69a743ebf..5798c78c69e1e49433635ce8f27be68d77f99e64 100644 (file)
 七余 七餘
 七八下里   七八下裏
 七出 七出
+七出戏      七齣戲
 七出祁山   七出祁山
 七分钟      七分鐘
 七划 七劃
 三冬 三冬
 三冬两夏   三冬兩夏
 三准 三準
+三出戏      三齣戲
 三出祁山   三出祁山
 三分钟      三分鐘
 三只 三隻
 不可胜言   不可勝言
 不可胜计   不可勝計
 不可胜记   不可勝記
-ä¸\8då\90\83ç\83\9fç\81«é£\9f        ä¸\8då\90\83煙火食
+ä¸\8då\90\83ç\83\9fç\81«é£\9f        ä¸\8då\96«煙火食
 不合 不合
 不合体统   不合體統
 不合作      不合作
 不差毫发   不差毫髮
 不干 不幹 不乾
 不干不净   不乾不淨
-ä¸\8då¹²ä¸\8dæ·¨å\90\83äº\86没ç\97\85       ä¸\8dä¹¾ä¸\8dæ·¨å\90\83了沒病
+ä¸\8då¹²ä¸\8dæ·¨å\90\83äº\86没ç\97\85       ä¸\8dä¹¾ä¸\8dæ·¨å\96«了沒病
 不干了      不幹了
 不干事      不幹事
 不干他      不干他
 乌滋别克   烏滋別克
 乌滋别克斯坦     烏滋別克斯坦
 乌烟瘴气   烏煙瘴氣
-ä¹\8cç\8b\97å\90\83é£\9fç\99½ç\8b\97å½\93ç\81¾       ç\83\8fç\8b\97å\90\83食白狗當災
+ä¹\8cç\8b\97å\90\83é£\9fç\99½ç\8b\97å½\93ç\81¾       ç\83\8fç\8b\97å\96«食白狗當災
 乌苏 烏蘇
 乌苏市      烏蘇市
 乌苏拉      烏蘇拉
 九亿五千万        九億五千萬
 九余 九餘
 九冬 九冬
+九出戏      九齣戲
 九出祁山   九出祁山
 九分钟      九分鐘
 九划 九劃
 似松实紧   似鬆實緊
 佃租制度   佃租制度
 但云 但云
-ä½\86å¾\97ä¸\80ç\89\87æ©\98ç\9a®å\90\83ä¸\94è\8e«å¿\98äº\86æ´\9e庭æ¹\96     ä½\86å¾\97ä¸\80ç\89\87æ©\98ç\9a®å\90\83且莫忘了洞庭湖
+ä½\86å¾\97ä¸\80ç\89\87æ©\98ç\9a®å\90\83ä¸\94è\8e«å¿\98äº\86æ´\9e庭æ¹\96     ä½\86å¾\97ä¸\80ç\89\87æ©\98ç\9a®å\96«且莫忘了洞庭湖
 但愿 但願
 但愿如此   但願如此
 但曲 但曲
 侵蚀基准   侵蝕基準
 便了 便了
 便于 便於
-便å\90\83å¹²      ä¾¿å\90\83乾
+便å\90\83å¹²      ä¾¿å\96«乾
 便宜不过当家     便宜不過當家
 便当 便當
 便当店      便當店
 党外 黨外
 党外人士   黨外人士
 党太尉      党太尉
-å\85\9a太å°\89å\90\83å\8c¾é£\9f     å\85\9a太å°\89å\90\83匾食
+å\85\9a太å°\89å\90\83å\8c¾é£\9f     å\85\9a太å°\89å\96«匾食
 党委 黨委
 党委书记   黨委書記
 党委会      黨委會
 全面禁止核试验条约    全面禁止核試驗條約
 全面规划   全面規劃
 全面进行   全面進行
+兩出戏      兩齣戲
 八万 八萬
 八万一千   八萬一千
 八万四千法门     八萬四千法門
 八余 八餘
 八克 八克
 八军团      八軍團
+八出戏      八齣戲
 八出祁山   八出祁山
 八十天环游地球  八十天環遊地球
 八十种好   八十種好
 六余 六餘
 六冲 六沖
 六出奇计   六出奇計
+六出戏      六齣戲
 六出祁山   六出祁山
 六厂 六廠
 六发 六發
 出宰 出宰
 出家 出家
 出家人      出家人
-å\87ºå®¶äººå\90\83å\85«æ\96¹     å\87ºå®¶äººå\90\83八方
+å\87ºå®¶äººå\90\83å\85«æ\96¹     å\87ºå®¶äººå\96«八方
 出将入相   出將入相
 出小恭      出小恭
 出尔反尔   出爾反爾
 出恭 出恭
 出息 出息
 出意外      出意外
-出戏 齣戲
+出戏 出戏 齣戲
 出战 出戰
 出户 出戶
 出手 出手
 切当 切當
 切菜板      切菜板
 切除术      切除術
-切面 切面
+切面 切面 切麵
 切骨之仇   切骨之仇
 刊了 刊了
 刊出 刊出
 口出恶言   口出惡言
 口出秽言   口出穢言
 口占 口占
+口吃 口吃
 口布 口布
 口干 口乾
 口干舌燥   口乾舌燥
 只可在      只可在
 只可意会不可言传       只可意會不可言傳
 只叹 只嘆
-å\8fªå\90\83 å\8fªå\90\83
+å\8fªå\90\83 å\8fªå\96«
 只合 只合
 只含 只含
 只听 只聽
 吁气 吁氣
 吁求 籲求
 吁请 籲請
-吃一顿挨一顿     吃一頓挨一頓
-吃不了      吃不了
-吃不出      吃不出
-吃不出来   吃不出來
-吃了 吃了
-吃了定心丸        吃了定心丸
-吃了秤砣   吃了秤砣
-吃了蜜蜂儿屎似的       吃了蜜蜂兒屎似的
-吃了饭      吃了飯
-吃亏上当   吃虧上當
-吃亏就是占便宜  吃虧就是佔便宜
-吃人一个蛋恩情无法断 吃人一個蛋恩情無法斷
-吃人虫      吃人蟲
-吃伤了      吃傷了
-吃几碗干饭        吃幾碗乾飯
-吃出 吃出
-吃合家欢   吃合家歡
-吃后悔药   吃後悔藥
-吃回头草   吃回頭草
-吃地面      吃地面
-吃姜 吃薑
-吃完面      吃完麪
-吃尽 吃盡
-吃尽当光   吃盡當光
-吃干了      吃乾了
-吃干醋      吃乾醋
-吃得了      吃得了
-吃得出      吃得出
-吃得出来   吃得出來
-吃挂络儿   吃掛絡兒
-吃敲才      吃敲才
-吃板刀面   吃板刀麪
-吃枪药      吃槍藥
-吃烟 吃煙
-吃药 吃藥
-吃药前      吃藥前
-吃药后      吃藥後
-吃药时      吃藥時
-吃豆干      吃豆乾
-吃辣面      吃辣麪
-吃过面      吃過麪
-吃里扒外   吃裏扒外
-吃里爬外   吃裏爬外
-吃钉板      吃釘板
-吃错药      吃錯藥
-吃闲话      吃閒話
-吃闲饭      吃閒飯
-吃面 吃麪
-吃饭傢伙   吃飯傢伙
-吃饭别忘了种谷人       吃飯別忘了種穀人
-吃饭家伙   吃飯家伙
-吃饱了饭撑的     吃飽了飯撐的
-吃饱没事干        吃飽沒事幹
+吃一顿挨一顿     喫一頓挨一頓
+吃不了      喫不了
+吃不出      喫不出
+吃不出来   喫不出來
+吃了 喫了
+吃了定心丸        喫了定心丸
+吃了秤砣   喫了秤砣
+吃了蜜蜂儿屎似的       喫了蜜蜂兒屎似的
+吃了饭      喫了飯
+吃亏上当   喫虧上當
+吃亏就是占便宜  喫虧就是佔便宜
+吃亏的是乖占便宜的是呆      喫虧的是乖占便宜的是呆
+吃人一个蛋恩情无法断 喫人一個蛋恩情無法斷
+吃人虫      喫人蟲
+吃伤了      喫傷了
+吃几碗干饭        喫幾碗乾飯
+吃出 喫出
+吃合家欢   喫合家歡
+吃后悔药   喫後悔藥
+吃回头草   喫回頭草
+吃地面      喫地面
+吃姜 喫薑
+吃完面      喫完麪
+吃尽 喫盡
+吃尽当光   喫盡當光
+吃干了      喫乾了
+吃干醋      喫乾醋
+吃得了      喫得了
+吃得出      喫得出
+吃得出来   喫得出來
+吃挂络儿   喫掛絡兒
+吃敲才      喫敲才
+吃板刀面   喫板刀麪
+吃枪药      喫槍藥
+吃烟 喫煙
+吃药 喫藥
+吃药前      喫藥前
+吃药后      喫藥後
+吃药时      喫藥時
+吃豆干      喫豆乾
+吃辣面      喫辣麪
+吃过面      喫過麪
+吃里扒外   喫裏扒外
+吃里爬外   喫裏爬外
+吃钉板      喫釘板
+吃错药      喫錯藥
+吃闲话      喫閒話
+吃闲饭      喫閒飯
+吃面 喫麪
+吃饭傢伙   喫飯傢伙
+吃饭别忘了种谷人       喫飯別忘了種穀人
+吃饭家伙   喫飯家伙
+吃饱了饭撑的     喫飽了飯撐的
+吃饱没事干        喫飽沒事幹
 各不相同   各不相同
 各个 各個
 各个击破   各個擊破
 合口味      合口味
 合口呼      合口呼
 合叶 合葉
-å\90\88å\90\83 å\90\88å\90\83
-å\90\88å\90\83æ\97\8f      å\90\88å\90\83族
+å\90\88å\90\83 å\90\88å\96«
+å\90\88å\90\83æ\97\8f      å\90\88å\96«族
 合合 合合
 合同 合同
 合同各方   合同各方
 同参 同參
 同右 同右
 同号 同號
-å\90\8cå\90\83 å\90\8cå\90\83
-å\90\8cå\90\83å\90\8cä½\8f   å\90\8cå\90\83同住
+å\90\8cå\90\83 å\90\8cå\96«
+å\90\8cå\90\83å\90\8cä½\8f   å\90\8cå\96«同住
 同名 同名
 同名之累   同名之累
 同名同姓   同名同姓
 喧哄 喧鬨
 喧哗 喧譁
 喧噪 喧噪
-喫亏的是乖占便宜的是呆      喫虧的是乖占便宜的是呆
 喷云吐雾   噴雲吐霧
 喷云嗳雾   噴雲噯霧
 喷出 噴出
 复习考      複習考
 复书 復書
 复交 復交
-复亩珍      複畝珍
 复仇 復仇
 复仇者      復仇者
 复仇记      復仇記
 多发病      多發病
 多只 多隻
 多台 多臺
-å¤\9aå\90\83å¤\9aå\8d    å¤\9aå\90\83多佔
+å¤\9aå\90\83å¤\9aå\8d    å¤\9aå\96«多佔
 多向 多向
 多哈回合   多哈回合
 多回 多回
 大获 大獲
 大获全胜   大獲全勝
 大虫 大蟲
-大è\99«ä¸\8då\90\83ä¼\8fè\82\89     å¤§è\9f²ä¸\8då\90\83伏肉
+大è\99«ä¸\8då\90\83ä¼\8fè\82\89     å¤§è\9f²ä¸\8då\96«伏肉
 大虫口里倒涎     大蟲口裏倒涎
-大è\99«å\90\83å°\8fè\99«        å¤§è\9f²å\90\83小蟲
+大è\99«å\90\83å°\8fè\99«        å¤§è\9f²å\96«小蟲
 大虫头上做窠     大蟲頭上做窠
 大蜡 大蜡
 大衍历      大衍曆
 就出 就出
 就出去      就出去
 就出来      就出來
-å°±å\90\83å¹²      å°±å\90\83乾
+å°±å\90\83å¹²      å°±å\96«乾
 就回 就回
 就回去      就回去
 就回来      就回來
 布气 布氣
 布水 布水
 布法罗      布法羅
-布洒器      布灑器
 布洛克      布洛克
 布洛斯顿   布洛斯頓
 布洛沙德   布洛沙德
 布瑞斯特   布瑞斯特
 布瑞特      布瑞特
 布瑞顿      布瑞頓
-布用填      布用填
 布疋 布疋
 布疑阵      佈疑陣
 布痕瓦尔德        布痕瓦爾德
 平复帖      平復帖
 平复起来   平復起來
 平头并进   平頭並進
-平安里      平安裏
+平安里      平安里
 平定准噶尔回部得胜图 平定準噶爾回部得勝圖
 平平当当   平平當當
 平康里      平康里
 弄盏传杯   弄盞傳杯
 弄粉调朱   弄粉調朱
 弄脏 弄髒
-å¼\84é\9d¢å\90\83      å¼\84麪å\90\83
+å¼\84é\9d¢å\90\83      å¼\84麪å\96«
 弄鬼吊猴   弄鬼弔猴
 弈秋 弈秋
 弊帚千金   弊帚千金
 快出来      快出來
 快升 快升
 快去快回   快去快回
-å¿«å\90\83å¹²      å¿«å\90\83乾
+å¿«å\90\83å¹²      å¿«å\96«乾
 快向 快向
 快回 快回
 快回到      快回到
 手铲 手鏟
 手链 手鍊 手鏈
 手面 手面
-æ\89\8bé\9d¢èµ\9aå\90\83   æ\89\8bé\9d¢è³ºå\90\83
+æ\89\8bé\9d¢èµ\9aå\90\83   æ\89\8bé\9d¢è³ºå\96«
 才上到      纔上到
 才上去      纔上去
 才上来      纔上來
 早知今日悔不当初       早知今日悔不當初
 早秋 早秋
 早自修      早自修
-æ\97©èµ·ç\9a\84é¸\9få\84¿æ\9c\89è\99«å\90\83       æ\97©èµ·ç\9a\84é³¥å\85\92æ\9c\89è\9f²å\90\83
+æ\97©èµ·ç\9a\84é¸\9få\84¿æ\9c\89è\99«å\90\83       æ\97©èµ·ç\9a\84é³¥å\85\92æ\9c\89è\9f²å\96«
 旭日东升   旭日東昇
 旭日初升   旭日初昇
 旱干 旱乾
 暗号 暗號
 暗号灯      暗號燈
 暗叹 暗歎
-æ\9a\97å\90\83ä¸\80æ\83\8a   æ\9a\97å\90\83一驚
+æ\9a\97å\90\83ä¸\80æ\83\8a   æ\9a\97å\96«一驚
 暗合 暗合
 暗含 暗含
 暗喜 暗喜
 武器系统   武器系統
 武器级别材料     武器級別材料
 武坛 武壇
-武大é\83\8eå\90\83æ¯\92è\8d¯     æ­¦å¤§é\83\8eå\90\83毒藥
+武大é\83\8eå\90\83æ¯\92è\8d¯     æ­¦å¤§é\83\8eå\96«毒藥
 武当 武當
 武当山      武當山
 武当派      武當派
 猝发 猝發
 猢狲入布袋        猢猻入布袋
 猥当大任   猥當大任
-ç\8cªå\85«æ\88\92å\90\83人å\8f\82æ\9e\9c  è±¬å\85«æ\88\92å\90\83人參果
+ç\8cªå\85«æ\88\92å\90\83人å\8f\82æ\9e\9c  è±¬å\85«æ\88\92å\96«人參果
 猪只 豬隻
 猪肉干      豬肉乾
 猪肝面      豬肝麪
 相须为命   相須爲命
 相须而行   相須而行
 盼了 盼了
-盼既示复   盼既示覆
 盾板 盾板
 省个 省個
 省了 省了
 稔恶不悛   稔惡不悛
 稠云 稠雲
 稳占 穩佔
-稳å\90\83ä¸\89注   ç©©å\90\83三注
+稳å\90\83ä¸\89注   ç©©å\96«三注
 稳坐钓鱼台        穩坐釣魚臺
 稳定物价   穩定物價
 稳当 穩當
 算出去      算出去
 算出来      算出來
 算历 算曆
-算发 算髮
 算得了      算得了
 算术 算術
 算术和      算術和
 肿瘤切除术        腫瘤切除術
 胁制 脅制
 胃出血      胃出血
+胃口 胃口
 胃脏 胃臟
 胃药 胃藥
 胃药片      胃藥片
 胡厮哄      胡廝哄
 胡厮混      胡廝混
 胡厮缠      胡廝纏
-è\83¡å\90\83æµ·å\96\9d   è\83¡å\90\83海喝
-è\83¡å\90\83é\97·ç\9d¡   è\83¡å\90\83悶睡
+è\83¡å\90\83æµ·å\96\9d   è\83¡å\96«海喝
+è\83¡å\90\83é\97·ç\9d¡   è\83¡å\96«悶睡
 胡同 衚衕
 胡吣 胡唚
 胡吹 胡吹
 虫儿 蟲兒
 虫出 蟲出
 虫卵 蟲卵
-è\99«å\90\83ç\89\99      è\9f²å\90\83牙
+è\99«å\90\83ç\89\99      è\9f²å\96«牙
 虫声 蟲聲
 虫媒病毒   蟲媒病毒
 虫媒花      蟲媒花
 角膜移植术        角膜移植術
 角色冲突   角色衝突
 角色扮演游戏     角色扮演遊戲
-角落发      角落發
+角落 角落
 角落里      角落裏
 角谷猜想   角谷猜想
 角里 角里
 邢台市      邢臺市
 那个 那個
 那个人      那個人
-é\82£ä¸ªç\8c«å\84¿ä¸\8då\90\83è\85¥  é\82£å\80\8bè²\93å\85\92ä¸\8då\90\83腥
+é\82£ä¸ªç\8c«å\84¿ä¸\8då\90\83è\85¥  é\82£å\80\8bè²\93å\85\92ä¸\8då\96«腥
 那个耗子不偷油  那個耗子不偷油
 那么 那麼
 那么干      那麼幹
 部发 部發
 部曲 部曲
 部胡林      部胡林
-部落发      部落發
+部落 部落
 部落同盟   部落同盟
 郭勇志      郭勇志
 郭台成      郭臺成
index 5dc2b2b1855efe22eb7360da119ab7a564aea8a7..a236514576eed080868c64b4899c46315063ce02 100644 (file)
@@ -23,6 +23,7 @@
 㞞    𪨊
 㟺    𪩇
 㠏    㟆
+㠣    𫵷
 㢗    𪪑
 㢝    𢋈
 㥮    㤘
@@ -88,6 +89,7 @@
 䍽    𦍠
 䎙    𫅭
 䎱    䎬
+䓣    𬜯
 䕤    𫟕
 䕳    𦰴
 䖅    𫟑
 䥄    𫠀
 䥇    䦂
 䥑    鿏
+䥕    𬭯
 䥗    𫔋
 䥩    𨱖
 䥯    𫔆
 僑    侨
 僕    仆
 僞    伪
+僤    𫢸
 僥    侥
 僨    偾
 僱    雇
 刪    删
 剄    刭
 則    则
-剋    克
+剋    克 剋
 剎    刹
 剗    刬
 剛    刚
 嘸    呒
 嘺    𪡀
 嘽    啴
-噁    恶
+噁    恶 𫫇
 噅    𠯠
 噓    嘘
 噚    㖊
 圖    图
 團    团
 圞    𪢮
+垻    坝
 埡    垭
+埨    𫭢
 埬    𪣆
 埰    采
 執    执
 塢    坞
 塤    埙
 塵    尘
+塸    𫭟
 塹    堑
 塿    𪣻
 墊    垫
 墜    坠
+墠    𫮃
 墮    堕
 墰    坛
 墲    𪢸
 妝    妆
 姍    姗
 姦    奸
+娙    𫰛
 娛    娱
 婁    娄
 婡    𫝫
 嵐    岚
 嵗    岁
 嵼    𡶴
+嵽    𫶇
 嵾    㟥
 嶁    嵝
 嶄    崭
 廕    荫
 廚    厨
 廝    厮
+廞    𫷷
 廟    庙
 廠    厂
 廡    庑
 張    张
 強    强
 彃    𪪼
+彄    𫸩
 彆    别
 彈    弹
 彌    弥
 昇    升
 時    时
 晉    晋
+晛    𬀪
 晝    昼
 暈    晕
 暉    晖
+暐    𬀩
 暘    旸
 暢    畅
 暫    暂
 梔    栀
 梖    𪱷
 梘    枧
+梜    𬂩
 條    条
 梟    枭
 梲    棁
 檻    槛
 櫃    柜
 櫅    𪲎
+櫍    𬃊
 櫓    橹
 櫚    榈
 櫛    栉
 洩    泄
 洶    汹
 浹    浃
+浿    𬇙
 涇    泾
 涗    涚
 涼    凉
 滿    满
 漁    渔
 漊    溇
+漍    𬇹
 漚    沤
 漢    汉
 漣    涟
 澤    泽
 澦    滪
 澩    泶
+澫    𬇕
 澬    𫞚
 澮    浍
 澱    淀
 熗    炝
 熚    𤇹
 熡    𤋏
+熰    𬉼
 熱    热
 熲    颎
 熾    炽
+燀    𬊤
 燁    烨
 燈    灯
 燉    炖
 燒    烧
+燖    𬊈
 燙    烫
 燜    焖
 營    营
 瑽    𪻐
 璉    琏
 璊    𫞩
+璕    𬍤
+璗    𬍡
 璝    𪻺
 璡    琎
 璣    玑
 璾    𫞦
 璿    璇
 瓄    𪻨
+瓅    𬍛
 瓊    琼
 瓏    珑
 瓔    璎
 礄    硚
 礆    硷
 礎    础
+礐    𬒈
 礒    𥐟
 礙    碍
 礦    矿
 篔    筼
 篘    𥬠
 篠    筿
+篢    𬕂
 篤    笃
 篩    筛
 篳    筚
 糾    纠
 紀    纪
 紂    纣
+紃    𬘓
 約    约
 紅    红
 紆    纡
 紛    纷
 紜    纭
 紝    纴
+紞    𬘘
 紟    𫄛
 紡    纺
 紬    䌷
 給    给
 絧    𫄡
 絨    绒
+絪    𬘡
 絰    绖
 統    统
 絲    丝
 綀    𦈌
 綁    绑
 綃    绡
+綄    𬘫
 綆    绠
 綇    𦈋
 綈    绨
 綉    绣
 綋    𫟄
 綌    绤
+綎    𬘩
 綏    绥
 綐    䌼
 綑    捆
 經    经
 綖    𫄧
 綜    综
+綝    𬘭
 綞    缍
 綟    𫄫
 綠    绿
 綡    𫟅
 綢    绸
 綣    绻
+綧    𬘯
+綪    𬘬
 綫    线
 綬    绶
 維    维
 縬    𦈚
 縭    缡
 縮    缩
+縯    𬙂
 縰    𫄳
 縱    纵
 縲    缧
 繾    缱
 繿    䍀
 纁    𫄸
+纆    𬙊
 纇    颣
 纈    缬
 纊    纩
 纏    缠
 纓    缨
 纔    才
+纕    𬙋
 纖    纤
 纗    𫄹
 纘    缵
 蓯    苁
 蓴    莼
 蓽    荜
+蔄    𬜬
 蔔    卜
 蔘    参
 蔞    蒌
 蘆    芦
 蘇    苏
 蘊    蕴
-蘋    苹 蘋
+蘋    苹 𬞟
 蘚    藓
 蘞    蔹
 蘟    𦻕
 蘺    蓠
 蘿    萝
 虆    蔂
+虉    𬟁
 處    处
 虛    虚
 虜    虏
 蛺    蛱
 蛻    蜕
 蜆    蚬
+蝀    𬟽
 蝕    蚀
 蝟    猬
 蝦    虾
 訊    讯
 訌    讧
 討    讨
+訏    𬣙
 訐    讦
 訑    𫍙
 訒    讱
 詗    诇
 詘    诎
 詛    诅
+詝    𬣞
 詞    词
 詠    咏
 詡    诩
 詣    诣
 試    试
 詩    诗
+詪    𬣳
 詫    诧
 詬    诟
 詭    诡
 諏    诹
 諑    诼
 諒    谅
+諓    𬣡
 論    论
 諗    谂
 諛    谀
 諜    谍
 諝    谞
 諞    谝
+諟    𬤊
 諡    谥
 諢    诨
 諣    𫍩
 諯    𫍱
 諰    𫍰
 諱    讳
+諲    𬤇
 諳    谙
 諴    𫍯
 諶    谌
 譎    谲
 譏    讥
 譑    𫍤
+譓    𬤝
 譖    谮
 識    识
 譙    谯
 軗    𨐅
 軛    轭
 軜    𫐇
+軝    𬨂
 軟    软
 軤    轷
 軨    𫐉
 輮    𫐓
 輯    辑
 輳    辏
+輶    𬨎
 輷    𫐒
 輸    输
 輻    辐
 鄖    郧
 鄟    𫑘
 鄧    邓
+鄩    𬩽
 鄭    郑
 鄰    邻
 鄲    郸
 醫    医
 醬    酱
 醱    酦
+醲    𬪩
 醶    𫑷
 釀    酿
 釁    衅
 釩    钒
 釲    𫟳
 釳    𨰿
+釴    𬬩
 釵    钗
 釷    钍
 釹    钕
 釺    钎
 釾    䥺
+釿    𬬱
 鈀    钯
 鈁    钫
 鈃    钘
 鉆    钻
 鉈    铊
 鉉    铉
+鉊    𬬿
 鉋    铇
 鉍    铋
 鉑    铂
 鉠    𫓭
 鉢    钵
 鉤    钩
+鉥    𬬸
 鉦    钲
+鉧    𬭁
 鉬    钼
 鉭    钽
+鉮    𬬹
 鉳    锫
 鉶    铏
 鉷    𫟹
 鋉    𨱈
 鋌    铤
 鋏    铗
+鋐    𬭎
 鋒    锋
 鋗    𫓶
 鋙    铻
 鋱    铽
 鋶    锍
 鋸    锯
+鋹    𬬮
 鋼    钢
 錀    𬬭
 錁    锞
 錛    锛
 錜    𫓻
 錝    𫓽
+錞    𬭚
 錟    锬
 錠    锭
 錡    锜
 鍥    锲
 鍩    锘
 鍬    锹
+鍭    𬭤
 鍮    𨱎
 鍰    锾
 鍵    键
 鎊    镑
 鎌    镰
 鎍    𫔅
+鎓    𬭩
 鎔    镕
 鎖    锁
 鎘    镉
 鏉    𨱒
 鏌    镆
 鏍    镙
+鏏    𬭬
 鏐    镠
 鏑    镝
 鏗    铿
 鏷    镤
 鏹    镪
 鏺    䥽
+鏻    𬭸
 鏽    锈
 鏾    𫔌
 鐃    铙
 鐦    锎
 鐧    锏
 鐨    镄
+鐩    𬭼
 鐪    𫓺
 鐫    镌
 鐮    镰
 闆    板
 闇    暗
 闈    闱
+闉    𬮱
 闊    阔
 闋    阕
 闌    阑
 隉    陧
 隊    队
 階    阶
+隑    𬮿
 隕    陨
 際    际
+隤    𬯎
 隨    随
 險    险
+隮    𬯀
 隯    陦
 隱    隐
 隴    陇
 頑    顽
 頒    颁
 頓    顿
+頔    𬱖
 頗    颇
 領    领
 頜    颌
+頠    𬱟
 頡    颉
 頤    颐
 頦    颏
 馼    𫘜
 駁    驳
 駃    𫘝
+駉    𬳶
 駊    𫘟
 駎    𩧨
 駐    驻
 駑    驽
 駒    驹
+駓    𬳵
 駔    驵
 駕    驾
 駘    骀
 駤    𫘠
 駧    𩧲
 駩    𩧴
+駪    𬳽
 駫    𫘡
 駭    骇
 駰    骃
 駶    𩧺
 駸    骎
 駻    𫘣
+駼    𬳿
 駿    骏
 騁    骋
 騂    骍
 騍    骒
 騎    骑
 騏    骐
+騑    𬴂
 騔    𩨀
 騖    骛
 騙    骗
 騚    𩨊
 騜    𫘩
 騝    𩨃
+騞    𬴃
 騟    𩨈
 騠    𫘨
 騤    骙
 驋    𩧯
 驌    骕
 驍    骁
+驎    𬴊
 驏    骣
 驓    𫘯
 驕    骄
 魷    鱿
 魺    鲄
 魽    𫠐
+鮀    𬶍
 鮁    鲅
 鮃    鲆
 鮄    𫚒
 鮅    𫚑
 鮆    𫚖
+鮈    𬶋
 鮊    鲌
 鮋    鲉
 鮍    鲏
 鮝    鲞
 鮞    鲕
 鮟    𩽾
+鮠    𬶏
+鮡    𬶐
 鮣    䲟
 鮤    𫚓
 鮦    鲖
 鯴    鲺
 鯶    𩽼
 鯷    鳀
+鯻    𬶟
 鯽    鲫
 鯾    𫚣
 鯿    鳊
 鰆    䲠
 鰈    鲽
 鰉    鳇
+鰊    𬶠
 鰋    𫚢
 鰌    䲡
 鰍    鳅
 鰲    鳌
 鰳    鳓
 鰵    鳘
+鰶    𬶭
 鰷    鲦
 鰹    鲣
 鰺    鲹
 鰼    鳛
 鰽    𫚧
 鰾    鳔
+鱀    𬶨
 鱂    鳉
 鱄    𫚋
 鱅    鳙
 鱖    鳜
 鱗    鳞
 鱘    鲟
+鱚    𬶮
 鱝    鲼
 鱟    鲎
 鱠    鲙
 鵂    鸺
 鵃    鸼
 鵊    𫛥
+鵏    𬷕
 鵐    鹀
 鵑    鹃
 鵒    鹆
 鶗    𫛸
 鶘    鹕
 鶚    鹗
+鶠    𬸘
 鶡    鹖
 鶥    鹛
 鶦    𫛷
 鶭    𫛯
 鶯    莺
 鶰    𫛫
+鶱    𬸣
 鶲    鹟
 鶴    鹤
 鶹    鹠
 鷗    鸥
 鷙    鸷
 鷚    鹨
+鷟    𬸦
 鷣    𫜃
 鷤    𫛴
 鷥    鸶
 鷨    𪉊
 鷩    𫜁
 鷫    鹔
+鷭    𬸪
 鷯    鹩
 鷲    鹫
 鷳    鹇
 鸋    𫛢
 鸌    鹱
 鸏    鹲
+鸑    𬸚
 鸕    鸬
 鸗    𫛟
 鸘    鹴
 齔    龀
 齕    龁
 齗    龂
+齘    𬹼
 齙    龅
 齜    龇
 齟    龃
 齪    龊
 齬    龉
 齭    𫜭
+齮    𬺈
 齯    𫠜
 齰    𫜬
 齲    龋
 齴    𫜮
 齶    腭
 齷    龌
+齼    𬺓
 齾    𫜰
 龍    龙
 龎    厐
 𡄣   𠵸
 𡅏   𠲥
 𡅯   𪢖
+𡑍   𫭼
 𡑭   𡋗
 𡓁   𪤄
 𡓾   𡋀
 𥖅   𥐯
 𥖲   𪿞
 𥗇   𪿵
+𥗽   𬒗
 𥜐   𫀓
 𥜰   𫀌
 𥞵   𥞦
index dee97540c2170d612e2bc8c07417cc2387eea50b..06e6596422b35c0ca97eb2919162040e74e66b2c 100644 (file)
@@ -29,6 +29,7 @@
 乾隆 乾隆
 乾隆年間   乾隆年间
 乾隆皇帝   乾隆皇帝
+二噁英      二𫫇英
 以免藉口   以免借口
 以功覆過   以功复过
 侔德覆載   侔德复载
 申覆 申复
 畢昇 毕昇
 發覆 发复
-盼既示覆   盼既示复
 瞭如 了如
 瞭如指掌   了如指掌
 瞭望 瞭望
index d8692ecf189fbaef98be4d6c241df68f8692e8ae..8960ce8d248bad7a29fad66afd0515937dfcf810 100644 (file)
@@ -230,9 +230,8 @@ U盤        隨身碟
 登錄 登入
 發佈 釋出
 發送 傳送
-皮膚 面板
 盤片 碟片
-ç\9b¤ç¬¦ ç¢\9f符
+ç\9b¤ç¬¦ ç£\81ç¢\9fæ©\9f代è\99\9f
 目標代碼   目的碼
 相冊 相簿
 矢量 向量
@@ -294,6 +293,7 @@ U盤        隨身碟
 藍牙 藍芽
 虛函數      虛擬函式
 虛擬機      虛擬機器
+虛擬機器   虛擬機器
 表達式      表示式 運算式
 複印 影印
 複選按鈕   覈取按鈕
index 265bf1ad8755d25fef398a7f46fddbdb1ac88b10..22b3b899d899210a08612065e09ddd022e2bc567 100644 (file)
@@ -34,3 +34,4 @@
 鐦    鉲
 鑥    鎦
 黃宏 黃宏
+借記卡      簽帳金融卡
index 9ac401fdbb8ba4ce0dffb608fab3fc317e4d7a28..7ab04dfdebb676cb2cb30641d1103d15c2cbf012 100644 (file)
@@ -10,3 +10,5 @@
 衹    衹 只
 著    着 著
 沈    沈 沉
+噁    恶 𫫇        「𫫇」爲化學名詞用字,如「二𫫇英」。        可恶 恶心 二𫫇英
+蘋    苹 𬞟        「𬞟」爲一種蕨類植物,生於淺水,四片小葉似「田」字,亦稱「田字草」,音pin2,粵音pan4。蘋果之「苹」音ping2,粵音ping4。
index f64533698b04ae5a95fad97773dcf08d3b867fac..d629b3fed5b736a83b0ef4bee91d3fef5165c7fc 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "opencc",
-  "version": "1.1.3",
+  "version": "1.1.4",
   "description": "Conversion between Traditional and Simplified Chinese",
   "author": "Carbo Kuo <byvoid@byvoid.com>",
   "license": "Apache-2.0",
index c74f8d0d9c29d984886112f479455f4adbec0390..474800180af8ae0a44ab5e687b62b58f83d8bdec 100644 (file)
@@ -25,7 +25,7 @@ bash ${MINICONDA_FILENAME} -b -f -p $HOME/miniconda3
 export PATH=$HOME/miniconda3/bin:$PATH
 eval "$(conda shell.bash hook)"
 
-for VERSION in 2.7 3.5 3.6 3.7 3.8 3.9; do
+for VERSION in 3.7 3.8 3.9 3.10; do
     # Create and activate environment
     conda create -y -n py$VERSION python=$VERSION
     conda activate py$VERSION
index e8d958f7d419619f77a4c1597edede44974f35ff..2862fbf4bb6717a0ceed68603d7ee3e89e846359 100644 (file)
@@ -12,7 +12,7 @@ bash ${MINICONDA_FILENAME} -b -f -p $HOME/miniconda3
 export PATH=$HOME/miniconda3/bin:$PATH
 eval "$(conda shell.bash hook)"
 
-for VERSION in 2.7 3.5 3.6 3.7 3.8 3.9; do
+for VERSION in 3.7 3.8 3.9 3.10; do
     # Create and activate environment
     conda create -y -n py$VERSION python=$VERSION
     conda activate py$VERSION
index 5bcbc2b8c23e0e470af08bc440856064d68b5289..58dc2122f47b3e0455bbdeb8b40ca6a251167224 100644 (file)
@@ -1,7 +1,7 @@
 @echo off
 setlocal EnableDelayedExpansion
 
-SET VERSIONS=2.7 3.5 3.6 3.7 3.8 3.9
+SET VERSIONS=3.7 3.8 3.9 3.10
 SET SOURCEDIR=%cd%
 
 REM Build packages
index af52ba6ca7371b5fc2bb6623a221128791ebcfbc..ed06259cd3bf560b084cfa675fb47d846ba583c6 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -202,7 +202,6 @@ setuptools.setup(
         'Natural Language :: Chinese (Simplified)',
         'Natural Language :: Chinese (Traditional)',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2',
         'Programming Language :: Python :: 3',
         'License :: OSI Approved :: Apache Software License',
         'Topic :: Scientific/Engineering',
index 07cf324a8368f374007321713b862db0f312fc4d..40e46d1f0888f2040b9543b49d72aa44cca9b642 100644 (file)
@@ -58,10 +58,10 @@ SerializableDictPtr ConvertDict(const std::string& format, const DictPtr dict) {
 }
 
 namespace opencc {
-void ConvertDictionary(const std::string inputFileName,
-                       const std::string outputFileName,
-                       const std::string formatFrom,
-                       const std::string formatTo) {
+void ConvertDictionary(const std::string& inputFileName,
+                       const std::string& outputFileName,
+                       const std::string& formatFrom,
+                       const std::string& formatTo) {
   DictPtr dictFrom = LoadDictionary(formatFrom, inputFileName);
   SerializableDictPtr dictTo = ConvertDict(formatTo, dictFrom);
   dictTo->SerializeToFile(outputFileName);
index 4bc4e8a2155fadfd7f0f81899323a44a14068aa9..f911c4feb57affd8106309249a03031f3192ad96 100644 (file)
@@ -25,8 +25,8 @@ namespace opencc {
  * Converts a dictionary from a format to another.
  * @ingroup opencc_cpp_api
  */
-OPENCC_EXPORT void ConvertDictionary(const std::string inputFileName,
-                                     const std::string outputFileName,
-                                     const std::string formatFrom,
-                                     const std::string formatTo);
+OPENCC_EXPORT void ConvertDictionary(const std::string& inputFileName,
+                                     const std::string& outputFileName,
+                                     const std::string& formatFrom,
+                                     const std::string& formatTo);
 } // namespace opencc
index a3612455538928ec5cae04950f505194c910cd25..f5e5140148316a2133d38dc1da437bb545895ae7 100644 (file)
@@ -30,9 +30,12 @@ bool Lexicon::IsSorted() {
                         DictEntry::UPtrLessThan);
 }
 
-bool Lexicon::IsUnique() {
+bool Lexicon::IsUnique(std::string* dupkey) {
   for (size_t i = 1; i < entries.size(); ++i) {
     if (entries[i - 1]->Key() == entries[i]->Key()) {
+      if (dupkey) {
+        *dupkey = entries[i]->Key();
+      }
       return false;
     }
   }
index bb8724c4ad768493365ff01a0bb35ec8c5824e10..688912875ead153c5984cbea80a5efa9cc3b8ad7 100644 (file)
@@ -47,7 +47,8 @@ public:
   bool IsSorted();
 
   // Returns true if every key unique (after sorted).
-  bool IsUnique();
+  // When dupkey is set, it is set to the duplicate key.
+  bool IsUnique(std::string* dupkey = nullptr);
 
   const DictEntry* At(size_t index) const { return entries.at(index).get(); }
 
index d256850e352b912423a1781c9dafb7be8d75dcf8..c81b3119981fe44e5a82deb4a8465807c6a3ed50 100644 (file)
@@ -35,6 +35,9 @@ static size_t GetKeyMaxLength(const LexiconPtr& lexicon) {
 
 static DictEntry* ParseKeyValues(const char* buff, size_t lineNum) {
   size_t length;
+  if (buff == nullptr || UTF8Util::IsLineEndingOrFileEnding(*buff)) {
+    return nullptr;
+  }
   const char* pbuff = UTF8Util::FindNextInline(buff, '\t');
   if (UTF8Util::IsLineEndingOrFileEnding(*pbuff)) {
     throw InvalidTextDictionary("Tabular not found " + std::string(buff),
@@ -66,7 +69,10 @@ static LexiconPtr ParseLexiconFromFile(FILE* fp) {
   UTF8Util::SkipUtf8Bom(fp);
   size_t lineNum = 1;
   while (fgets(buff, ENTRY_BUFF_SIZE, fp)) {
-    lexicon->Add(ParseKeyValues(buff, lineNum));
+    DictEntry* entry = ParseKeyValues(buff, lineNum);
+    if (entry != nullptr) {
+      lexicon->Add(entry);
+    }
     lineNum++;
   }
   return lexicon;
@@ -88,8 +94,10 @@ TextDictPtr TextDict::NewFromSortedFile(FILE* fp) {
 TextDictPtr TextDict::NewFromFile(FILE* fp) {
   const LexiconPtr& lexicon = ParseLexiconFromFile(fp);
   lexicon->Sort();
-  if (!lexicon->IsUnique()) {
-    throw InvalidFormat("The text dictionary contains duplicated keys.");
+  std::string dupkey;
+  if (!lexicon->IsUnique(&dupkey)) {
+    throw InvalidFormat(
+        "The text dictionary contains duplicated keys: " + dupkey + ".");
   }
   return TextDictPtr(new TextDict(lexicon));
 }
index e0dff7943435939bb500fc2cf8bec7f21eb793cb..7a8db0f9067e17e24b7d1c36dac1c9a8a127efbb 100644 (file)
@@ -40,6 +40,18 @@ TEST_F(TextDictTest, Deserialization) {
   TestDict(deserialized);
 }
 
+TEST_F(TextDictTest, DeserializationEmptyLine) {
+  FILE* fp = fopen(fileName.c_str(), "w");
+  fprintf(fp, "A\tB\n\n\nC\tD E\n\n");
+  fclose(fp);
+  const TextDictPtr& dict = SerializableDict::NewFromFile<TextDict>(fileName);
+  EXPECT_EQ(dict->GetLexicon()->Length(), 2);
+
+  Optional<const DictEntry*> entry = dict->opencc::Dict::Match("A");
+  EXPECT_TRUE(!entry.IsNull());
+  EXPECT_EQ(utf8("A"), entry.Get()->Key());
+}
+
 TEST_F(TextDictTest, ExactMatch) {
   auto there = textDict->Match("積羽沉舟", 12);
   EXPECT_FALSE(there.IsNull());
index f1b4b144d62662300c509f9f069520d89c2d581d..a04a6fccfe87d4aa67c2e79646c549b09e9b4be5 100644 (file)
@@ -152,7 +152,7 @@ public:
   }
 
   /**
-   * Copies a substd::string with given length to a new std::string.
+   * Copies a substring with given length to a new string.
    */
   static std::string FromSubstr(const char* str, size_t length) {
     std::string newStr;
index 757df619e02c6039d9582d6143c15054276fa6ca..b402a98e4ef6d9d662a2538333b7e237279d0866 100644 (file)
@@ -6,4 +6,5 @@
 曾經有一份真誠的愛情放在我面前,我沒有珍惜,等我失去的時候我才後悔莫及。人事間最痛苦的事莫過於此。如果上天能夠給我一個再來一次得機會,我會對那個女孩子說三個字,我愛你。如果非要在這份愛上加個期限,我希望是,一萬年。
 新的理論被發現了。
 金胄不是金色的甲冑。
-經理發現後勸諭兩人
\ No newline at end of file
+經理發現後勸諭兩人
+想到自己一緊張就口吃,我就沒胃口喫飯
\ No newline at end of file
index ce309ae27f1dce35e4bd6e934162d6ee9c78e49c..b1db0273127b46a4ea3c161ed7ab077de1c0511a 100644 (file)
@@ -6,4 +6,5 @@
 曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及。人事间最痛苦的事莫过于此。如果上天能够给我一个再来一次得机会,我会对那个女孩子说三个字,我爱你。如果非要在这份爱上加个期限,我希望是,一万年。
 新的理论被发现了。
 金胄不是金色的甲胄。
-经理发现后劝谕两人
\ No newline at end of file
+经理发现后劝谕两人
+想到自己一紧张就口吃,我就没胃口吃饭
\ No newline at end of file
index 51850494358b192597d6f00621ab7857b7dfb907..299716adf8b993229ed29ab00dee31cb63d96b51 100644 (file)
@@ -1 +1,2 @@
-曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及。人事间最痛苦的事莫过于此。如果上天能够给我一个再来一次得机会,我会对那个女孩子说三个字,我爱你。如果非要在这份爱上加个期限,我希望是,一万年。
\ No newline at end of file
+曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及。人事间最痛苦的事莫过于此。如果上天能够给我一个再来一次得机会,我会对那个女孩子说三个字,我爱你。如果非要在这份爱上加个期限,我希望是,一万年。
+二𫫇英
\ No newline at end of file
index 86de44a22031eaa56dd8e1464b7c211ac86c1bad..eef2f346e9be0eaadd5c779897de7a850248070f 100644 (file)
@@ -1 +1,2 @@
-曾經有一份真誠的愛情放在我面前,我沒有珍惜,等我失去的時候我才後悔莫及。人事間最痛苦的事莫過於此。如果上天能夠給我一個再來一次得機會,我會對那個女孩子說三個字,我愛你。如果非要在這份愛上加個期限,我希望是,一萬年。
\ No newline at end of file
+曾經有一份真誠的愛情放在我面前,我沒有珍惜,等我失去的時候我才後悔莫及。人事間最痛苦的事莫過於此。如果上天能夠給我一個再來一次得機會,我會對那個女孩子說三個字,我愛你。如果非要在這份愛上加個期限,我希望是,一萬年。
+二噁英
\ No newline at end of file